#!/bin/bash

# =============== 安装必需的参数 ===============
rootdir=`pwd`
filename="{[{FileName}]}"
home="{[{InstallDir}]}"
installFile="$rootdir/download/$filename"
wgeturl="-P $rootdir/download {[{sourceURL}]}/$filename"
install_log="$rootdir/jdk_install.log"
installtime=$(date "+%Y%m%d_%H%M%S")
checkjdk=0
function getVersion(){
    InstallVersion=`echo $installFile | sed 's/.*\(jdk.*\).rpm/\1/g'`
}
# =============== 到这里结束 ===============

helplist="= = = = = = = = = 帮助 = = = = = = = = =
 -f/--file          指定源tar文件(默认为$installFile)
 -h/--help          帮助文档
 -y                 跳过检查是否重复
 install/--install  安装$InstallVersion
 --optestinstall      用于OpManager测试安装(并非真实安装，只是生成了校验文件)"

Params=$@

# 捕捉Ctrl+C
trap 'onCtrlC' INT

function onCtrlC (){
    echo 用户退出脚本,日志记录:$install_log
    exitscripts 20
}

# 无需控制的变量
listlen=${#yum_list[@]}

source res/echo_log.sh
source res/optest.sh

function exitscripts(){
    case $1 in
        1)
            echo -e "\033[41;37m下载失败\033[0m" 
            echo_log 3 "$wgeturl 下载失败"
            exit $1
        ;;
        2)
            echo -e "下载完成，文件保存在当前目录下，请重新指定" 
            echo_log 2 "$wgeturl 下载完成，文件保存在当前目录下，请重新指定"
            exit $1
        ;;
        3)
            echo -e "yum安装失败" 
            echo_log 3 "yum安装失败"
            exit $1
        ;;
        4)
            echo -e "\033[41;37m$installFile安装失败\033[0m" 
            echo_log 3 "$installFile安装失败"
            exit $1
        ;;
        5)
            echo -e "\033[41;37m已有jdk，请检查是否重复，若并无重复请查看帮助跳过检查\033[0m" 
            echo_log 3 "已有jdk，请检查是否重复，若并无重复请查看帮助跳过检查"
            exit $1
        ;;
        7)
            echo -e "无有效参数被指定，请参考帮助：\n$helplist"
            exit $1
        ;;
        20)
            echo -e "\n\n==========退出脚本：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
            echo_log 3 "用户退出脚本"
            exit $1
        ;;
        *) echo "[error code: $1 ]"
        ;;
    esac
}

# 检查文件是否存在
function fileexist()
{
    if [ ! -e $1 ];then
        echo -e "\033[43;37m 文件 $1 不存在，开始下载:$wgeturl \033[0m"
	echo_log 3 "文件 $1 不存在，开始下载:$wgeturl"
        rpm -q wget
        wgetres=$?
    else
        return 0
    fi
    if [ $wgetres -ne 0 ];then
        yum -y install wget && exitscripts 3
        echo 安装wget完成
        echo_log 1 安装wget完成
    fi
    wget $wgeturl || exitscripts 1
    echo -e "\n\n==========重新开始脚本：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
    AllParams $Params
}

function rpminstall()
{
    if [ $checkjdk == 0 ] 
    then
        rpm -qa | grep jdk && exitscripts 5 || echo "无已有jdk版本"
    fi
    rpm -ivh $installFile
    if [ $? -ne 0 ]
    then
        exitscripts 4
    else
        echo -e "\033[42;37m安装完成\033[0m"
        echo_log 1 "安装完成"
    fi
    exit 0
}

# 参数指定
function AllParams(){
    i=0
    for param in $@
    do
        params[$i]="$param"
        ((i++))
    done
    if [ ${#params[@]} -eq 0 ] 
    then
        exitscripts 7
    fi
    # 将参数都遍历一次，判断是否有其他参数
    i=0
    while [ $i -lt ${#params[@]} ]
    do
        case ${params[i]} in
            -f|--file)
                installFile="${params[i+1]}"
                echo_log 0  参数：installFile=$installFile
                ((i++))
            ;;
            -h|--help)
                echo -e "$helplist" && exit 0
            ;;
            install|--install)
                startinstall
            ;;
            -y)
                checkjdk=1
            ;;
            --optestinstall)
                optest {[{InstallDir}]}/Installed/jdk
            ;;
            *)
                echo "参数：${params[i]}"
            ;;
        esac
        ((i++))
    done
}

# ========================== 安装开始 ==========================
startinstall(){
    echo -e "==========开始脚本：$(date "+%Y-%m-%d %H:%M:%S")==========\n\n" >> $install_log
    fileexist $installFile
    getVersion
    echo_log 0 版本：$InstallVersion
    echo -e "\033[44;37m编译的版本为：$InstallVersion\033[0m"
    rpminstall
    echo "日志记录:$install_log"
    echo -e "\n\n==========安装结束：$(date "+%Y-%m-%d %H:%M:%S")==========" >> $install_log
}
AllParams $Params
# ========================== 安装结束 ==========================



